#ifndef _OOGAMEAPP_H_
#define _OOGAMEAPP_H_

#include "ooengine.h"

//------------------------------------------------------------------------
class ooDisplayWindow;
class ooRender;
class ooImageCodec;
class ooInputManager;
class ooGameWorld;

//------------------------------------------------------------------------
class ooGameApp
{
	DeclareSingleton(ooGameApp)
public:
	ooGameApp();
	virtual ~ooGameApp();

	void			setAppName(const String& name);
	void			setWindowed(bool b);
	void			setWindowSize(int width, int height);
	void			postQuitMessage();
	
	virtual void	run();

protected:
	void			_init();
	void			_cleanup();

protected:
	ooDisplayWindow*	m_displayWindow;
	ooRender*			m_render;
	ooImageCodec*		m_imageCodec;
	ooInputManager*		m_inputManager;
	ooGameWorld*		m_gameWorld;
	ooConsoleLogger*	m_logger;
	bool				m_quit;

	SimpleTimer			m_timer;
};

#endif